import store from "../store";
// import store from "../store/index";
// import store from "../store/index.js";

// console.log(a);
// console.log(b);
// console.log(c);
// import {  } from "../";

const baseURL = "https://pcapi-xiaotuxian-front-devtest.itheima.net";
const request = {
  invoke(args) {
    uni.showLoading({ title: "加载中" });

    if (!args.url.startsWith("http")) {
      // 如果你的请求的url 不是以http开头，那么我就帮你补全url
      args.url = baseURL + args.url;
    }
    args.header = {
      ...args.header, // 保留原本的 header
      "source-client": "miniapp", // 添加小程序端调用标识
    };
    // 判断 vuex中有没有token  有 自动的携带到请求头中
    // 单独引入 store 文件即可
    // console.log(store);
    // 先要判断userInfo是否存在， 再去判断 它内部的token是否存在
    if (store.state.user.userInfo && store.state.user.userInfo.token) {
      // console.log("有token");
      args.header.Authorization = store.state.user.userInfo.token;
    } else {
      console.log("没有token");
    }
  },
  complete(res) {
    uni.hideLoading();
  },
};
uni.addInterceptor("request", request);
uni.addInterceptor("uploadFile", request);

// function createHttp () {
  const http = (options) => {
    return new Promise((resolve, reject) => {
      // uniapi 如果有返回值 返回值是一个数组
      //      const arr= await uni.request();

      // 但是 如果你没有直接使用 await 的 话  ，而是传统的success，返回值 就是res//
      uni.request({
        ...options,
        success(res) {
          // 是正常的对象
          // 判断 响应状态码  200-300之内 就是正常的请求
          if (res.statusCode >= 200 && res.statusCode < 300) {
            resolve(res.data);
          } else {
            // 判断 是不是 没有token的错误 401
            if (res.statusCode === 401) {
              // 跳转到登录页面
              uni.navigateTo({ url: "/pages/login/index" });
            }

            // 错误了
            reject(res);
          }
        },
        fail(err) {
          reject(err);
        },
      });
    });
  };

  // get 方法请求
  http.get = (url, data) => {
    return http({ url, data, method: 'GET' });
  };
  // post 方法请求
  http.post = (url, data) => {
    return http({ url, data, method: 'POST' });
  };
  // put 方法请求
  http.put = (url, data) => {
    return http({ url, data, method: 'PUT' });
  };
  // delete 方法请求
  http.delete = (url, data) => {
    return http({ url, data, method: 'DELETE' });
  };
//   return http
// }
// const http = createHttp()
export default http

